package com.unitechs.commons.utils;

import lombok.extern.slf4j.Slf4j;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间工具
 * 2023/10/26 14:53
 *
 * @author ZhouYz
 * @since 1.0.0
 */
@Slf4j
public final class ZyucTimeUtil {

    private ZyucTimeUtil() {
        //防止实例化
        throw new AssertionError();
    }

    /**
     * 获取当前时间
     *
     * @param format 时间格式
     * @return 当前时间
     */
    public static String zyucGetNowTime(String format) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            Date currentDate = new Date();
            return sdf.format(currentDate);
        } catch (Exception t) {
            SimpleDateFormat defaultSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date currentDate = new Date();
            return defaultSdf.format(currentDate);
        }
    }

    /**
     * 判断是否相同时刻
     *
     * @param dateTimeStr1  开始时间
     * @param dateTimeStr2  结束时间
     * @param format1       开始时间格式
     * @param format2       结束时间格式
     * @param formatCompare 时间格式(yyyyMMddHH)表示比较到小时
     * @return 判断结果
     */
    public static boolean zyucIsSameDay(String dateTimeStr1, String dateTimeStr2, String format1, String format2, String formatCompare) {
        log.info("zyucIsSameDay入参为：{}{}{}{}{}",dateTimeStr1,dateTimeStr2,format1,format2,formatCompare);
        try {
            SimpleDateFormat dateFormat1 = new SimpleDateFormat(format1);
            Date date1 = dateFormat1.parse(dateTimeStr1);

            SimpleDateFormat dateFormat2 = new SimpleDateFormat(format2);
            Date date2 = dateFormat2.parse(dateTimeStr2);

            // 提取日期部分
            SimpleDateFormat dateOnlyFormat = new SimpleDateFormat(formatCompare);
            String dateStr1 = dateOnlyFormat.format(date1);
            log.info("时间一：{}",dateStr1);
            String dateStr2 = dateOnlyFormat.format(date2);
            log.info("时间二：{}",dateStr2);
            // 比较日期部分

            return dateStr1.equals(dateStr2);

        } catch (Exception e) {
            log.info("判断时间是否相同时，出现了异常，请检查是否按照要求传入参数。");
            return false;
        }
    }
}
